# concat 函數的範例

CONCAT() 函數不得與 CONCATENATE 指令碼關鍵字相混淆。

簡單來說，Concat() 是用來將多個值/文字/選項串連/聯結成一個字串。不過，它可以用在許多方面，協助解決不同的問題。所有範例均依據下列表格：

![Example string table data](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/Resources/Images/ui_gen_ConcatTable.png)

範例字串表格資料

| Table | MyColumn | Date | Value |
| --- | --- | --- | --- |
| Data | JKL | 01/01/2012 | 11 |
| Data1 | WVX | 01/02/2012 | 13 |
| Data | GHI | 01/03/2012 | 13 |
| Data | ABC | 01/04/2012 | 15 |
| Data1 | STU | 01/05/2012 | 18 |
| Data1 | PQR | 01/06/2012 | 10 |
| Data1 | MNO | 01/07/2012 | 25 |
| Data | DEF | 01/08/2012 | 11 |

## 簡單字串串連

上文提到，concat 函數可以串連值清單中的值。這些值可以是固定值，也可以是隨著選項/資料而變化的值。

`=CONCAT(MyColumn,',')`

`=CONCAT(DISTINCT MyColumn,',')`

這組簡單的 concat 陳述式會串連 MyColumn 資料行的所有可能值。您可能會想要新增相異 (DISTINCT) 關鍵字。這可確保各個值在字串中僅顯示一次：

ABC,DEF,GHI,JKL,MNO,PQR,STU,VWX

使用簡單的 concat 時，您可以選擇將排序加權新增到函數，以便按照您選擇的資料行排列字串值。以下範例已新增日期資料行來排序值。

`=CONCAT(MyColumn, ',', Date)`

結果：JKL,VWX,GHI,ABC,STU,PQR,MNO,DEF

## 運算式/set 陳述式中的 Concat()

範例： 將多個動態值傳遞到集合分析運算式

有時候您會想要將動態選取的值傳遞到 set 陳述式。若要這麼做，您需要將幾個單引號新增到字串，以便 CONCAT() 函數傳回 'JKL','VWX' 等等。但是，您無法直接使用單引號，因為評估 Concat 時會解譯單引號，而評估 set 運算式時則不會。需要改用 Chr() 函數：

`=CONCAT(Chr(39)&MyColumn&Chr(39),',')`

您可以接著將此 concat 陳述式傳遞到運算式內：

`=Sum({<MyColumn={$(=CONCAT(Chr(39)&MyColumn&Chr(39),','))}>} Value)`

在大多數情況下，可以在資料島出現時使用這項技巧。它可以讓您將值傳遞到不影響資料模型任何部份的運算式，因為資料島表格無法聯結至資料模型。

## 指令碼中的 Concat()

Concat 也可以在指令碼中用來將多列轉換為一個單一資料行值，就和其他任何彙總一樣。

記住先前使用的來源資料，指令碼端 CONCAT 的結果如下：

```
ConcatExample:
```

```
Load Table,
```

```
Concat(MyColumn,',') as CombinedData
```

```
Resident Temp
```

Group By Table;

下列是此指令碼函數的結果：

表格形式的範例輸出

| Table | CombinedData |
| --- | --- |
| Data | ABC,DEF,GHI,JKL |
| Data1 | MNO,PQR,STU,WVX |

## 使用 Rank() 影響 Concat()

開始使用其他函數來搭配 concat()，就會開始獲得明智的結果。在此範例中，Rank() 已用來擷取前三個演出者 (按照 Value) 並加以串連。

=CONCAT(IF(aggr(Rank(sum(Value)),MyColumn)&lt;=3,MyColumn),',')

結果：ABC,MNO,STU